class Animal {
    protected String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void print()
    {
        System.out.println("Animal" + this.name);
    }
    public void eat() {
        System.out.println(this.name+" 正在吃饭！");
    }
}

//扩展 拓展
class Dog extends Animal{
    public Dog(String name,int age) {
        super(name,age);//调用父类的构造方法 帮助初始化 子类从父类继承过来的成员 并不会 生成父类对象
        System.out.println("Dog(String name,int age)");
    }

    public void print()
    {
        //1.super.访问父类的属性或方法
        super.print();
        System.out.println("Dog" + this.name + this.age);
    }
    public void bark() {
        System.out.println(this.name+ " 正在旺旺叫！");
    }
}

//extends: 继承语法
//继承是一种思想对共性进行抽取，从而达到代码复用的目的
//就近原则，己有用己，己无用父
class Cat extends Animal{

    public Cat(String name, int age) {
        //2.super()调用父类构造函数
        super(name, age);
    }

    //final:修饰变量则为常量
    //      修饰类则表示此类不能被继承
    //      修饰方法表示不能被重写
    public void miaomiao() {
        System.out.println(this.name+" 正在喵喵叫！");
    }
}

public class inheritance {
    //...可变参数
    public static void print(int... array)
    {
        for(int x : array)
        {
            System.out.print(x + " ");
        }
    }
    //static 只能修饰成员变量或方法，不能修饰普通变量
    static int cnt;
    public static void main(String[] args) {
//        print(new int[]{1,2,3,4,5,6,7,8,9});
        Dog d = new Dog("大黄", 1);
        d.print();

    }
}
